home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
051-060
/
amok58
/
audiosupport1.1
/
audiosupport.dok
< prev
next >
Wrap
Text File
|
1993-11-04
|
5KB
|
142 lines
__________________________________________________________________________
Dokumentation zum Modul "AudioSupport V1.1"
von Christian Stiens, 24-Jul-91
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
1. Umfang des Pakets
· AudioSupport.dok - Diese Dokumentation
· AudioSupport.mod - Der Quelltext des Moduls in Oberon
· AudioSupport.sym - Die Symboldatei von Oberon V2.01 erzeugt
· AudioSupport.obj - Die Objektdatei
· AudioSupport.objs - Die Objektdatei mit Option -d compiliert
· AudioDemo - Kleine Demo, das Shepard-Töne ausgibt
· AudioDemo.mod - Sein Quelltext
2. Copyright
Das gesamte Paket ist Public-Domain. Jede
nicht-kommerzielle
Nutzung
ist erlaubt. Möchten Sie das Modul für ein kommerzielles Projekt
benutzen, so müssen Sie sich mit mir in Verbindung setzen, um eine
eventuelle Gewinnbeteiligung auszuhandeln.
3. Einleitung
Dieses Modul soll die Programmierung des Audio-Devices vereinfachen.
Wer bisher die Hardware-Register für die Erzeugung von Sounds be-
nutzt hat, weil er sich nicht mit dem Audio-Device herumschlagen
wollte, für den ist dieses Modul genau das richtige.
4. Beschreibung der Prozeduren
PROCEDURE SetPriority(pri: SHORTINT);
Normalerweise erhalten die Audio-Kanäle beim Öffen mit OpenChannel
die Priorität 0. Mit der Prozedur SetPriority können Sie eine
beliebige Priorität (-128 bis +127) festlegen mit der die Kanäle
von nun an geöffnet werden.
PROCEDURE DontAbort;
Normalerweise wird das Programm abgebrochen, falls ein Kanal nicht
geöffnet werden konnte oder versucht wird einen nicht geöffneten
Kanal zu benutzen. Ein Aufruf der Prozedur DontAbort bewirkt,
daß kein Abruch mehr erfolgt. Das Programm kann ohne Tonausgabe
weiterlaufen.
PROCEDURE OpenChannel(mask: SET): SHORTINT;
Diese Prozedur öffnet einen AudioKanal. Man übergibt ihr
eine Menge von Kanälen, von der sich das Audio-Device einen
aussucht. Wenn man z.B. einen rechten Kanal haben will, setzt
man mask = {as.right0,as.right1}. Wenn man irgend einen Kanal haben
möchte, setzt man {0..3} für mask ein (oder einfach {}).
Als Rückgabe erhält man den Kanal, der tatsächlich geöffnet
wurde.
Falls alle angegebenen Kanäle besetzt sind, wird das Programm
mit dem Requester "Can't open audio-channel" abgebrochen, es
sei denn, man hat vorher DontAbort aufgerufen. In diesem Fall liefert
OpenChannel -1.
PROCEDURE CloseChannel(chan: SHORTINT);
Hiermit wird der angegebene Kanal wieder geschlossen.
Alle geöffneten Kanäle werden bei Programmende automatisch
wieder geschlossen. Das Schließen eines nicht geöffneten Kanal
ist erlaubt.
PROCEDURE PlaySound(chan: SHORTINT; sound: e.ADDRESS; size: LONGINT;
per, vol, cyc: INTEGER);
Diese Routine spielt einen Sound, der im Chip-Memory abgelegt
ist über den angegebenen Kanal. size ist die Länge des Samples
in Bytes. Der per-Wert errechnet sich nach folgender Formel aus
der gewünschten Sampling-Frequenz:
per = clock / freq
Die Konstante clock bezeichnet die halbe Taktfrequenz des
Amiga und kann aus dem Modul importiert werden.
Wenn man z.B. eine 16 Bytes lange Sinustabelle mit der Frequenz
1000 Hz spielen möchte beträgt der period-Wert:
per = clock / (16*1000) = 223
Der period-Wert muß größer gleich 124 sein, denn sonst kommt
die Hardware nicht mehr mit und es zu Störgeräuschen.
cyc bestimmt, wie oft der Sample wiederholt werden soll. Falls
cyc gleich 0 ist, wird der Sample andauernd wiederholt.
PROCEDURE PlayLoopSound(chan: SHORTINT; sound: e.ADDRESS;
oneShot, repeat: LONGINT;
per, vol: INTEGER);
Mit dieser Prozedur kann man einen "geloopten" Sound spielen.
oneShot gibt dabei die Länge der "Einschwingphase" und repeat
die Länge des geloopten Teils an:
----oneShot----+-------repeat-------+
| |
^ v
| |
+---------<----------+
PROCEDURE StopSound(chan: SHORTINT);
Hiermit kann der Sound der von dem angegebenen Kanal
gespielt wird abgebrochen werden.
PROCEDURE ModifySound(chan: SHORTINT; per, vol: INTEGER);
Diese Prozedur ermöglicht die nachträgliche Änderung der
Frequenz und Lautstärke des laufenden Sounds.
PROCEDURE CheckSound(chan: SHORTINT): BOOLEAN;
CheckSound ermittelt, ob zur Zeit ein Ton auf dem angegebenen
Kanal gespielt wird. Falls dies der Fall ist wird TRUE zurück-
gegeben, sonst FALSE.
PROCEDURE WaitSound(chan: SHORTINT);
Diese Prozedur wartet solange, bis der Sound auf dem angegebenen
Kanal abgelaufen ist.
PROCEDURE Filter(on: BOOLEAN);
Hiermit kann der LowPass-Filter des Amiga aus (on = FALSE)
und wieder eingeschaltet (on = TRUE) werden.
Bei einigen älteren Amigas läßt sich der Audio-Filter nicht
softwaremäßig abschalten.
Viel Spaß !!!
--- Chris